#include <GL/glut.h>
#include <math.h>

const double TWO_PI = 6.2831853;
GLuint regHex;
GLdouble theta;
GLint x, y, k;

void init()
{
	glClearColor(1.0, 1.0, 1.0, 1.0);	// 设置窗口显示颜色为白色
	glMatrixMode(GL_PROJECTION);		// 设置放映参数
	gluOrtho2D(0.0, 400, 0.0, 400);
}


void myDisplay()
{
	glClear(GL_COLOR_BUFFER_BIT);		// 清空窗口显示
	glColor3f(0.0, 0.0, 0.0);
	
	regHex = glGenLists(1);
	glNewList(regHex, GL_COMPILE);
	glBegin(GL_POLYGON);
	for (k = 0; k < 6; k++)
	{
		theta = TWO_PI * k / 6.0;
		x = 200 + 150 * cos(theta);
		y = 200 + 150 * sin(theta);
		glVertex2i(x, y);
	}
	glEnd();
	glEndList();

	glCallList(regHex);

	glFlush();

}


void main(int argc, char** argv)
{
	glutInit(&argc, argv);							// 初始化glut（可不写默认）
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);	// 显示模式初始化 单缓冲模式 RGB显示模式
	glutInitWindowPosition(50, 100);				// 窗口距离左和上的距离（可不写默认）
	glutInitWindowSize(400, 400);					// 窗口的宽和高（可不写默认）
	glutCreateWindow("第一个OpenGl程序");			// 窗口名称

	init();											// 执行初始化程序
	glutDisplayFunc(&myDisplay);					// 自定义函数绘图
	glutMainLoop();									// 消息循环响应
}
